package com.example.mousetest;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Random;


public class MainActivity extends AppCompatActivity {
    //定义变量、对象、洞穴坐标
    private int i=0;//记录打到的地鼠个数
    private ImageView mouse;//定义mouse对象
    private TextView info1;//定义info1对象，用于查看洞穴坐标
    private Handler handler;//声明一个Handler对象
    //定义一个二维数组，记录地鼠在洞穴的位置
    public int[][] position=new int[][]{
            {510, 350}, {1130, 350}, {1820, 350},
            {460, 600}, {1150, 600}, {1820, 600},
            {430, 900}, {1130, 900}, {1870, 900}

    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置不显示顶部栏
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置横屏模式

        //2.绑定控件
        mouse = (ImageView)findViewById(R.id.imageView_1);
        info1 = findViewById(R.id.info);
        /************获取洞穴位置*****************/
        //通过 logcat 查看 【注】：getRawY()：触摸点距离屏幕上方的长度（此长度包括程序项目名栏的长度）
        info1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        float x = event.getRawX();
                        float y = event.getRawY();
                        Log.i("x:" + x, "y:" + y);
                        break;
                    default:
                        break;
                }
                return false;
            }
        });
        //3.实现地鼠随机出现
        //创建Handler消息处理机制
        final Handler handler = new Handler(){
            int index;
            @Override
            public void handleMessage(@NonNull Message msg) {
                //需要处理的消息
                if(msg.what==0x101){
                    index=msg.arg1;//接收到地鼠的位置索引
                    mouse.setX(position[index][0]);//设置地鼠的x轴坐标位置
                    mouse.setY(position[index][1]);//设置地鼠的y轴坐标位置
                    mouse.setVisibility(View.VISIBLE);//显示地鼠
                }
                super.handleMessage(msg);
            }
        };

        //创建线程
        final Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                int index=0;//定义一个记录地鼠位置的索引值
                while(!Thread.currentThread().isInterrupted()){
                    index=new Random().nextInt(position.length);//产生一个随机整数（范围：0<=index<数组长度）
                    Message m = handler.obtainMessage();//创建消息对象
                    m.what = 0x101;//消息标识
                    m.arg1 = index;//保存地鼠位置的索引值
                    handler.sendMessage(m);//发送消息通知Handler处理
                    try{
                        Thread.sleep(new Random().nextInt(500)+500);//休眠一段时间
                    }catch(InterruptedException e){
                        e.printStackTrace();
                    }

                }
            }
        });
        t.start();//开启线程

        //添加触摸MOUSE后的事件
        mouse.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                view.setVisibility(View.INVISIBLE);//设置地鼠不显示
                i++;
                //提示打到地鼠的个数
                Toast.makeText(MainActivity.this,"打到["+i+"]只地鼠！",Toast.LENGTH_SHORT).show();
                return false;
            }
        });



    }
}
